﻿using System;
using System.Web;

namespace BusinessLayer.Model.Services.Abstract
{
    /// <summary>
    /// Interface que define las propiedades y metodos del Application Service.
    /// El servicio de la aplicación básicamente provee de información sobre los folders
    /// de configuración y contenido que utiliza la aplicación.
    /// </summary>
    public interface IApplicationService
    {
        /// <summary>
        /// Obtiene o define el folder de la aplicación
        /// </summary>
        string ApplicationFolder { get; set; }

        /// <summary>
        /// Obtiene o define el folder de los archivos de datos
        /// </summary>
        string DataFolder { get; set; }        

        /// <summary>
        /// Obtiene o define el folder de los archivos de log
        /// </summary>
        string LogsFolder { get; set; }

        /// <summary>
        /// Obtiene o define el folder de los archivos de noticias
        /// </summary>
        string NewsFilesFolder { get; set; }

        /// <summary>
        /// Obtiene o define el folder que contiene los archivos xml.
        /// </summary>
        string XmlFilesFolder { get; set; }

        /// <summary>
        /// Url de la página
        /// </summary>
        string ApplicationURL { get; set; }

        /// <summary>
        /// Obtiene o define el folder de la galeria de imágenes 
        /// </summary>
        string GalleryFolder { get; set; }

        /// <summary>
        /// Obtiene o define el folder de los banners
        /// </summary>
        string BannerFolder { get; set; }

        /// <summary>
        /// Obtiene la ruta relativa a la aplicación a partir de una ruta física
        /// </summary>
        /// <param name="path">Ruta física</param>
        /// <returns>Ruta relativa</returns>
        string GetRelativePath(string path, HttpRequest request);

        /// <summary>
        /// Genera todos los folders de la aplicación si hay alguno inválido
        /// </summary>
        void GenerateSystemFoldersIfInvalid();
    }
}
